Software system management tools define software modules, their interdependencies, and the rules that are required to combine the software modules into a final software program. Software system management tools are necessary in view of the fact that a large software program typically includes a large number of individual software modules in the form of source code programs that are compiled and then linked into a single executable final software program. The large number of individual software modules and their individual processing requirements result in the need for sophisticated software system management tools. For example, each source code program may require a distinct compiler. Thus, a mechanism must be developed to coordinate a source code program with the appropriate compiler. There are many commercially available software system management tools.
Software system management tools often combine computer code written in one language with computer code written in a second language. It is often necessary for the code written in one language (referred to herein as the inheriting language) to make use of constants and data structures defined by code written in a second language (referred to herein as the generating language). In addition, the values of these constants and the exact layout of these data structures often depend on the target machine for which the code is being compiled. The layout of the data structures and the value of the constants may be different between the machine doing the compiling (the host computer), and the machines for which the code is being compiled (the target computer). In some cases, the code may need to be compiled for multiple target machines that have different values and layouts.
The layout of these data structures and the value of the constants may change during the development process. It is important that it be easy to recompile the code written in the inheriting language. However, the specific constants and data structures referenced by the inheriting code are liable to change as the inheriting code is developed. In addition, new constants can be accessed and new fields in data structures might be accessed.
It would be highly desirable to provide a software system management tool that allows an inheriting language to make use of information from a generating language, regardless of the host computer or of the target computer. That is, the software system management tool should provide an automatic technique for determining the constants and fields needed by the inheriting code. Further, the software system management tool should make it easy to recompile the inheriting code automatically. Such a software system management tool would simplify the development of source code written in different languages.